/*
 * this header file defines the ModuleType class extends form ModularAtomic
 */

#ifndef __CCCC_MOD_TYPE_H
#define __CCCC_MOD_TYPE_H

#include "cccc_mod_atom.h"

class ModuleType : public ModularAtomic{
protected:
	vector<ModuleType *> SubModuleTypes;
	
public:
	ModuleType();
	ModuleType(string steroType, string moduleDef);
	~ModuleType();
	
	/*
	 * virtual functions
	 */
	
	virtual void setFanins(){
		
	}
	virtual void setFanouts(){
		
	}
	virtual void addViolation(string violation){
		
	}
	
	void addSubModuleType(ModuleType *);
	void deleteSubModuleType(ModuleType *);
	vector<ModuleType *> getSubModuleTypes();
};

#endif
